#include "AAngle_Self.h" 

	void AComb_Angle_Self::Assign_Variables(AVariable &var){
	
	}

	void AComb_Angle_Self::Set_Single_Variable(std::string name, std::vector<double> data){
		angles[name] = data;
	}


	void AComb_Angle_Self::Set_Variables(){
		
		Set_Single_Variable("out1_out1", out1_out1_angle);
		Set_Single_Variable("out2_out2", out2_out2_angle);
		Set_Single_Variable("out1_out2", out1_out2_angle);
		Set_Single_Variable("out1_comb", out1_comb_angle);
		Set_Single_Variable("out2_comb", out2_comb_angle);

		Set_Single_Variable("comb_comb", comb_comb_angle);
		
		Set_Single_Variable("left1_left1", left1_left1_angle);
		Set_Single_Variable("left2_left2", left2_left2_angle);
		Set_Single_Variable("left1_left2", left1_left2_angle);
		Set_Single_Variable("left1_comb",  left1_comb_angle);
		Set_Single_Variable("left2_comb",  left2_comb_angle);
		
		Set_Single_Variable("out1_left1", out1_left1_angle);
		Set_Single_Variable("out1_left2", out1_left2_angle);
		Set_Single_Variable("out2_left1", out2_left1_angle);
		Set_Single_Variable("out2_left2", out2_left2_angle);
	}

	void AComb_Angle_Self::Set_Single_Param(std::string name, int value){
		if(name == "out1"){
			_nout1 = value;
		}
		else if( name == "out2") {
			_nout2 = value;
		}
		else if( name == "left1") {
			_nleft1 = value;
		}
		else if( name == "left2") {
			_nleft2 = value;
		}
		else{
			ShowMessage(2,"name not exists");
		}
	
	}

	void AComb_Angle_Self::Set_Param(int nout1, int nout2, int nleft1, int nleft2, int ncomb){
		Set_Single_Param("out1", nout1);
		Set_Single_Param("out2", nout2);
		Set_Single_Param("left1", nleft1);
		Set_Single_Param("left2", nleft2);
	}


// /****************************************************************************
///  brief: Set_Angle
//   set angles between final states between the out-out left-left and out-left and out-comb left-comb
// ****************************************************************************/
	void AComb_Angle_Self::Set_Angle(std::vector<TLorentzVector> &out1, std::vector<TLorentzVector> &out2, std::vector<TLorentzVector> &left1, std::vector<TLorentzVector> &left2, TLorentzVector &comb){

		//out1 - out1
		//ShowMessage(2,"Set_Angle",out1,out2,left1,left2,comb);
		Set_Param(out1.size(), out2.size(), left1.size(), left2.size());
		if(out1.size()>=2){
			for(int i=0; i < out1.size()-1; i++){
				for(int j=1; j < out1.size(); j++){
					out1_out1_angle.push_back(out1[i].Angle(out1[j].Vect() ));
					_num_out1_out1++;
				}
			}
		}
		//out2 - out2
		if(out2.size()>=2){
			for(int i=0; i < out2.size()-1; i++){
				for(int j=1; j < out2.size(); j++){
					out2_out2_angle.push_back(out2[i].Angle(out2[j].Vect() ));
					_num_out2_out2++;
				}
			}
		}
		//out1 - out2
		if(out1.size()>=1 && out2.size()>=1){
			for(int i=0; i < out1.size(); i++){
				for(int j=0; j < out2.size(); j++){
					out1_out2_angle.push_back(out1[i].Angle(out2[j].Vect() ));
					_num_out1_out2++;
				}
			}
		}
		//out1 - comb 
		if(out1.size()>=1 ){
			for(int i=0; i < out1.size(); i++){
				out1_comb_angle.push_back(out1[i].Angle(comb.Vect() ));
				_num_out1_comb++;
			}
		}
		//out2 - comb 
		if(out2.size()>=1 ){
			for(int i=0; i < out2.size(); i++){
				out2_comb_angle.push_back(out2[i].Angle(comb.Vect() ));
				_num_out2_comb++;
			}
		}

		comb_comb_angle.push_back(comb.Angle(comb.Vect() ));
		_num_comb_comb++;

		//left1 - left1
		if(left1.size()>=2){
			for(int i=0; i < left1.size()-1; i++){
				for(int j=1; j < left1.size(); j++){
					left1_left1_angle.push_back(left1[i].Angle(left1[j].Vect() ));
					_num_left1_left1++;
				}
			}
		}
		//left2 - left2
		if(left2.size()>=2){
			for(int i=0; i < left2.size()-1; i++){
				for(int j=1; j < left2.size(); j++){
					left2_left2_angle.push_back(left2[i].Angle(left2[j].Vect() ));
					_num_left2_left2++;
				}
			}
		}
		//left1 - left2
		if(left1.size()>=1 && left2.size()>=1){
			for(int i=0; i < left1.size(); i++){
				for(int j=0; j < left2.size(); j++){
					left1_left2_angle.push_back(left1[i].Angle(left2[j].Vect() ));
					_num_left1_left2++;
				}
			}
		}
		//left1 - comb 
		if(left1.size()>=1 ){
			for(int i=0; i < left1.size(); i++){
				left1_comb_angle.push_back(left1[i].Angle(comb.Vect() ));
				_num_left1_comb++;
			}
		}
		//left2 - comb 
		if(left2.size()>=1 ){
			for(int i=0; i < left2.size(); i++){
				left2_comb_angle.push_back(left2[i].Angle(comb.Vect() ));
				_num_left2_comb++;
			}
		}



		//out1 - left1 
		if(out1.size()>=1 && left1.size()>=1){
			for(int i=0; i < out1.size(); i++){
				for(int j=0; j < left1.size(); j++){
					out1_left1_angle.push_back(out1[i].Angle(left1[j].Vect() ));
					_num_out1_left1++;
				}
			}
		}
		//out1 - left2 
		if(out1.size()>=1 && left2.size()>=1){
			for(int i=0; i < out1.size(); i++){
				for(int j=0; j < left2.size(); j++){
					out1_left2_angle.push_back(out1[i].Angle(left2[j].Vect() ));
					_num_out1_left2++;
				}
			}
		}
		//out2 - left1 
		if(out2.size()>=1 && left1.size()>=1){
			for(int i=0; i < out2.size(); i++){
				for(int j=0; j < left1.size(); j++){
					out2_left1_angle.push_back(out2[i].Angle(left1[j].Vect() ));
					_num_out2_left1++;
				}
			}
		}
		//out2 - left2 
		if(out2.size()>=1 && left2.size()>=1){
			for(int i=0; i < out2.size(); i++){
				for(int j=0; j < left2.size(); j++){
					out2_left2_angle.push_back(out2[i].Angle(left2[j].Vect() ));
					_num_out2_left2++;
				}
			}
		}
	}


	int AComb_Angle_Self::Num(std::string name){
		if(name == "out1_out1"){
			return(_num_out1_out1);
		}
		else if(name == "out1_out2"){
			return(_num_out1_out2);
		}
		else if(name == "out1_comb"){
			return(_num_out1_comb);
		}
		else if(name == "out1_left1"){
			return(_num_out1_left1);
		}
		else if(name == "out1_left2"){
			return(_num_out1_left2);
		}

		else if(name == "out2_out2"){
			return(_num_out2_out2);
		}
		else if(name == "out2_comb"){
			return(_num_out2_comb);
		}
		else if(name == "out2_left1"){
			return(_num_out2_left1);
		}
		else if(name == "out2_left2"){
			return(_num_out2_left2);
		}


		else if(name == "left1_comb"){
			return(_num_left1_comb);
		}
		else if(name == "left1_left1"){
			return(_num_left1_left1);
		}
		else if(name == "left1_left2"){
			return(_num_left1_left2);
		}

		else if(name == "left2_comb"){
			return(_num_left2_comb);
		}
		else if(name == "left2_left2"){
			return(_num_left2_left2);
		}
		return(-1);

	}

	void AComb_Angle_Self::Print(int level, std::string str){

		if(str!=""){
			ShowMessage(level,"AComb_Angle_Self contents for ", str);
		}
		else{
			ShowMessage(level,"AComb_Angle_Self contents for ", _title);
		}
		ShowMessage(level+1,"out1_out1_angle", out1_out1_angle);
		ShowMessage(level+1,"out2_out2_angle", out2_out2_angle);
		ShowMessage(level+1,"out1_out2_angle", out1_out2_angle);
		ShowMessage(level+1,"out1_comb_angle", out1_comb_angle);
		ShowMessage(level+1,"out2_comb_angle", out2_comb_angle);
		ShowMessage(level+1,"comb_comb_angle", comb_comb_angle);
		ShowMessage(level+1,"left1_left1_angle", left1_left1_angle);
		ShowMessage(level+1,"left2_left2_angle", left2_left2_angle);
		ShowMessage(level+1,"left1_left2_angle", left1_left2_angle);
		ShowMessage(level+1,"left1_comb_angle", left1_comb_angle);
		ShowMessage(level+1,"left2_comb_angle", left2_comb_angle);
		ShowMessage(level+1,"out1_left1_angle", out1_left1_angle);
		ShowMessage(level+1,"out1_left2_angle", out1_left2_angle);
		ShowMessage(level+1,"out2_left1_angle", out2_left1_angle);
		ShowMessage(level+1,"out2_left2_angle", out2_left2_angle);
	}
















void AComb_DeltaR_Self::Set_Single_Variable(std::string name, std::vector<double> data){
	DeltaRs[name] = data;
}


void AComb_DeltaR_Self::Set_Variables(){
	
	Set_Single_Variable("out1_out1", out1_out1_DeltaR);
	Set_Single_Variable("out2_out2", out2_out2_DeltaR);
	Set_Single_Variable("out1_out2", out1_out2_DeltaR);
	Set_Single_Variable("out1_comb", out1_comb_DeltaR);
	Set_Single_Variable("out2_comb", out2_comb_DeltaR);
	

	Set_Single_Variable("comb_comb", comb_comb_DeltaR);

	Set_Single_Variable("left1_left1", left1_left1_DeltaR);
	Set_Single_Variable("left2_left2", left2_left2_DeltaR);
	Set_Single_Variable("left1_left2", left1_left2_DeltaR);
	Set_Single_Variable("left1_comb",  left1_comb_DeltaR);
	Set_Single_Variable("left2_comb",  left2_comb_DeltaR);
	
	Set_Single_Variable("out1_left1", out1_left1_DeltaR);
	Set_Single_Variable("out1_left2", out1_left2_DeltaR);
	Set_Single_Variable("out2_left1", out2_left1_DeltaR);
	Set_Single_Variable("out2_left2", out2_left2_DeltaR);
}

void AComb_DeltaR_Self::Set_Single_Param(std::string name, int value){
	if(name == "out1"){
		_nout1 = value;
	}
	else if( name == "out2") {
		_nout2 = value;
	}
	else if( name == "left1") {
		_nleft1 = value;
	}
	else if( name == "left2") {
		_nleft2 = value;
	}
	else{
		ShowMessage(2,"name not exists");
	}

}

void AComb_DeltaR_Self::Set_Param(int nout1, int nout2, int nleft1, int nleft2, int ncomb){
	Set_Single_Param("out1", nout1);
	Set_Single_Param("out2", nout2);
	Set_Single_Param("left1", nleft1);
	Set_Single_Param("left2", nleft2);
}
// /****************************************************************************
///  brief: Set_DeltaR
//   set DeltaRs between final states between the out-out left-left and out-left and out-comb left-comb
// ****************************************************************************/
void AComb_DeltaR_Self::Set_DeltaR(std::vector<TLorentzVector> &out1, std::vector<TLorentzVector> &out2, std::vector<TLorentzVector> &left1, std::vector<TLorentzVector> &left2, TLorentzVector &comb){
	//out1 - out1
	Set_Param(out1.size(), out2.size(), left1.size(), left2.size());
	if(out1.size()>=2){
		for(int i=0; i < out1.size()-1; i++){
			for(int j=1; j < out1.size(); j++){
				out1_out1_DeltaR.push_back(out1[i].DeltaR(out1[j]));
			}
		}
	}
	//out2 - out2
	if(out2.size()>=2){
		for(int i=0; i < out2.size()-1; i++){
			for(int j=1; j < out2.size(); j++){
				out2_out2_DeltaR.push_back(out2[i].DeltaR(out2[j]));
			}
		}
	}
	//out1 - out2
	if(out1.size()>=1 && out2.size()>=1){
		for(int i=0; i < out1.size(); i++){
			for(int j=0; j < out2.size(); j++){
				out1_out2_DeltaR.push_back(out1[i].DeltaR(out2[j]));
			}
		}
	}
	//out1 - comb 
	if(out1.size()>=1 ){
		for(int i=0; i < out1.size(); i++){
			out1_comb_DeltaR.push_back(out1[i].DeltaR(comb));
		}
	}
	//out2 - comb 
	if(out2.size()>=1 ){
		for(int i=0; i < out2.size(); i++){
			out2_comb_DeltaR.push_back(out2[i].DeltaR(comb));
		}
	}

		comb_comb_DeltaR.push_back(comb.DeltaR(comb));


	//left1 - left1
	if(left1.size()>=2){
		for(int i=0; i < left1.size()-1; i++){
			for(int j=1; j < left1.size(); j++){
				left1_left1_DeltaR.push_back(left1[i].DeltaR(left1[j]));
			}
		}
	}
	//left2 - left2
	if(left2.size()>=2){
		for(int i=0; i < left2.size()-1; i++){
			for(int j=1; j < left2.size(); j++){
				left2_left2_DeltaR.push_back(left2[i].DeltaR(left2[j]));
			}
		}
	}
	//left1 - left2
	if(left1.size()>=1 && left2.size()>=1){
		for(int i=0; i < left1.size(); i++){
			for(int j=0; j < left2.size(); j++){
				left1_left2_DeltaR.push_back(left1[i].DeltaR(left2[j]));
			}
		}
	}
	//left1 - comb 
	if(left1.size()>=1 ){
		for(int i=0; i < left1.size(); i++){
			left1_comb_DeltaR.push_back(left1[i].DeltaR(comb));
		}
	}
	//left2 - comb 
	if(left2.size()>=1 ){
		for(int i=0; i < left2.size(); i++){
			left2_comb_DeltaR.push_back(left2[i].DeltaR(comb));
		}
	}



	//out1 - left1 
	if(out1.size()>=1 && left1.size()>=1){
		for(int i=0; i < out1.size(); i++){
			for(int j=0; j < left1.size(); j++){
				out1_left1_DeltaR.push_back(out1[i].DeltaR(left1[j]));
			}
		}
	}
	//out1 - left2 
	if(out1.size()>=1 && left2.size()>=1){
		for(int i=0; i < out1.size(); i++){
			for(int j=0; j < left2.size(); j++){
				out1_left2_DeltaR.push_back(out1[i].DeltaR(left2[j]));
			}
		}
	}
	//out2 - left1 
	if(out2.size()>=1 && left1.size()>=1){
		for(int i=0; i < out2.size(); i++){
			for(int j=0; j < left1.size(); j++){
				out2_left1_DeltaR.push_back(out2[i].DeltaR(left1[j]));
			}
		}
	}
	//out2 - left2 
	if(out2.size()>=1 && left2.size()>=1){
		for(int i=0; i < out2.size(); i++){
			for(int j=0; j < left2.size(); j++){
				out2_left2_DeltaR.push_back(out2[i].DeltaR(left2[j]));
			}
		}
	}
}


void AComb_DeltaR_Self::Print(int level, std::string str){

	if(str!=""){
		ShowMessage(level,"AComb_DeltaR_Self contents for ", str);
	}
	else{
		ShowMessage(level,"AComb_DeltaR_Self contents for ", _title);
	}
	ShowMessage(level+1,"out1_out1_DeltaR", out1_out1_DeltaR);
	ShowMessage(level+1,"out2_out2_DeltaR", out2_out2_DeltaR);
	ShowMessage(level+1,"out1_out2_DeltaR", out1_out2_DeltaR);
	ShowMessage(level+1,"out1_comb_DeltaR", out1_comb_DeltaR);
	ShowMessage(level+1,"out2_comb_DeltaR", out2_comb_DeltaR);
	ShowMessage(level+1,"comb_comb_DeltaR", comb_comb_DeltaR);
	ShowMessage(level+1,"left1_left1_DeltaR", left1_left1_DeltaR);
	ShowMessage(level+1,"left2_left2_DeltaR", left2_left2_DeltaR);
	ShowMessage(level+1,"left1_left2_DeltaR", left1_left2_DeltaR);
	ShowMessage(level+1,"left1_comb_DeltaR", left1_comb_DeltaR);
	ShowMessage(level+1,"left2_comb_DeltaR", left2_comb_DeltaR);
	ShowMessage(level+1,"out1_left1_DeltaR", out1_left1_DeltaR);
	ShowMessage(level+1,"out1_left2_DeltaR", out1_left2_DeltaR);
	ShowMessage(level+1,"out2_left1_DeltaR", out2_left1_DeltaR);
	ShowMessage(level+1,"out2_left2_DeltaR", out2_left2_DeltaR);
}







void AComb_DeltaPhi_Self::Set_Single_Variable(std::string name, std::vector<double> data){
	DeltaPhis[name] = data;
}


void AComb_DeltaPhi_Self::Set_Variables(){
	
	Set_Single_Variable("out1_out1", out1_out1_DeltaPhi);
	Set_Single_Variable("out2_out2", out2_out2_DeltaPhi);
	Set_Single_Variable("out1_out2", out1_out2_DeltaPhi);
	Set_Single_Variable("out1_comb", out1_comb_DeltaPhi);
	Set_Single_Variable("out2_comb", out2_comb_DeltaPhi);

	Set_Single_Variable("comb_comb", comb_comb_DeltaPhi);
	
	Set_Single_Variable("left1_left1", left1_left1_DeltaPhi);
	Set_Single_Variable("left2_left2", left2_left2_DeltaPhi);
	Set_Single_Variable("left1_left2", left1_left2_DeltaPhi);
	Set_Single_Variable("left1_comb",  left1_comb_DeltaPhi);
	Set_Single_Variable("left2_comb",  left2_comb_DeltaPhi);
	
	Set_Single_Variable("out1_left1", out1_left1_DeltaPhi);
	Set_Single_Variable("out1_left2", out1_left2_DeltaPhi);
	Set_Single_Variable("out2_left1", out2_left1_DeltaPhi);
	Set_Single_Variable("out2_left2", out2_left2_DeltaPhi);
}

void AComb_DeltaPhi_Self::Set_Single_Param(std::string name, int value){
	if(name == "out1"){
		_nout1 = value;
	}
	else if( name == "out2") {
		_nout2 = value;
	}
	else if( name == "comb") {
		_ncomb= value;
	}
	else if( name == "left1") {
		_nleft1 = value;
	}
	else if( name == "left2") {
		_nleft2 = value;
	}
	else{
		ShowMessage(2,"name not exists");
	}

}

void AComb_DeltaPhi_Self::Set_Param(int nout1, int nout2, int nleft1, int nleft2, int ncomb){
	Set_Single_Param("out1", nout1);
	Set_Single_Param("out2", nout2);
	Set_Single_Param("comb", ncomb);
	Set_Single_Param("left1", nleft1);
	Set_Single_Param("left2", nleft2);
}
// /****************************************************************************
///  brief: Set_DeltaPhi
//   set DeltaPhis between final states between the out-out left-left and out-left and out-comb left-comb
// ****************************************************************************/
void AComb_DeltaPhi_Self::Set_DeltaPhi(std::vector<TLorentzVector> &out1, std::vector<TLorentzVector> &out2, std::vector<TLorentzVector> &left1, std::vector<TLorentzVector> &left2, TLorentzVector &comb){
	//out1 - out1
	Set_Param(out1.size(), out2.size(), left1.size(), left2.size());
	if(out1.size()>=2){
		for(int i=0; i < out1.size()-1; i++){
			for(int j=1; j < out1.size(); j++){
				out1_out1_DeltaPhi.push_back(out1[i].DeltaPhi(out1[j]));
			}
		}
	}
	//out2 - out2
	if(out2.size()>=2){
		for(int i=0; i < out2.size()-1; i++){
			for(int j=1; j < out2.size(); j++){
				out2_out2_DeltaPhi.push_back(out2[i].DeltaPhi(out2[j]));
			}
		}
	}
	//out1 - out2
	if(out1.size()>=1 && out2.size()>=1){
		for(int i=0; i < out1.size(); i++){
			for(int j=0; j < out2.size(); j++){
				out1_out2_DeltaPhi.push_back(out1[i].DeltaPhi(out2[j]));
			}
		}
	}
	//out1 - comb 
	if(out1.size()>=1 ){
		for(int i=0; i < out1.size(); i++){
			out1_comb_DeltaPhi.push_back(out1[i].DeltaPhi(comb));
		}
	}
	//out2 - comb 
	if(out2.size()>=1 ){
		for(int i=0; i < out2.size(); i++){
			out2_comb_DeltaPhi.push_back(out2[i].DeltaPhi(comb));
		}
	}

	comb_comb_DeltaPhi.push_back(comb.DeltaPhi(comb));


	//left1 - left1
	if(left1.size()>=2){
		for(int i=0; i < left1.size()-1; i++){
			for(int j=1; j < left1.size(); j++){
				left1_left1_DeltaPhi.push_back(left1[i].DeltaPhi(left1[j]));
			}
		}
	}
	//left2 - left2
	if(left2.size()>=2){
		for(int i=0; i < left2.size()-1; i++){
			for(int j=1; j < left2.size(); j++){
				left2_left2_DeltaPhi.push_back(left2[i].DeltaPhi(left2[j]));
			}
		}
	}
	//left1 - left2
	if(left1.size()>=1 && left2.size()>=1){
		for(int i=0; i < left1.size(); i++){
			for(int j=0; j < left2.size(); j++){
				left1_left2_DeltaPhi.push_back(left1[i].DeltaPhi(left2[j]));
			}
		}
	}
	//left1 - comb 
	if(left1.size()>=1 ){
		for(int i=0; i < left1.size(); i++){
			left1_comb_DeltaPhi.push_back(left1[i].DeltaPhi(comb));
		}
	}
	//left2 - comb 
	if(left2.size()>=1 ){
		for(int i=0; i < left2.size(); i++){
			left2_comb_DeltaPhi.push_back(left2[i].DeltaPhi(comb));
		}
	}



	//out1 - left1 
	if(out1.size()>=1 && left1.size()>=1){
		for(int i=0; i < out1.size(); i++){
			for(int j=0; j < left1.size(); j++){
				out1_left1_DeltaPhi.push_back(out1[i].DeltaPhi(left1[j]));
			}
		}
	}
	//out1 - left2 
	if(out1.size()>=1 && left2.size()>=1){
		for(int i=0; i < out1.size(); i++){
			for(int j=0; j < left2.size(); j++){
				out1_left2_DeltaPhi.push_back(out1[i].DeltaPhi(left2[j]));
			}
		}
	}
	//out2 - left1 
	if(out2.size()>=1 && left1.size()>=1){
		for(int i=0; i < out2.size(); i++){
			for(int j=0; j < left1.size(); j++){
				out2_left1_DeltaPhi.push_back(out2[i].DeltaPhi(left1[j]));
			}
		}
	}
	//out2 - left2 
	if(out2.size()>=1 && left2.size()>=1){
		for(int i=0; i < out2.size(); i++){
			for(int j=0; j < left2.size(); j++){
				out2_left2_DeltaPhi.push_back(out2[i].DeltaPhi(left2[j]));
			}
		}
	}
}


void AComb_DeltaPhi_Self::Print(int level, std::string str){

	if(str!=""){
		ShowMessage(level,"AComb_DeltaPhi_Self contents for ", str);
	}
	else{
		ShowMessage(level,"AComb_DeltaPhi_Self contents for ", _title);
	}
	ShowMessage(level+1,"out1_out1_DeltaPhi", out1_out1_DeltaPhi);
	ShowMessage(level+1,"out2_out2_DeltaPhi", out2_out2_DeltaPhi);
	ShowMessage(level+1,"out1_out2_DeltaPhi", out1_out2_DeltaPhi);
	ShowMessage(level+1,"out1_comb_DeltaPhi", out1_comb_DeltaPhi);
	ShowMessage(level+1,"out2_comb_DeltaPhi", out2_comb_DeltaPhi);
	ShowMessage(level+1,"comb_comb_DeltaPhi", comb_comb_DeltaPhi);
	ShowMessage(level+1,"left1_left1_DeltaPhi", left1_left1_DeltaPhi);
	ShowMessage(level+1,"left2_left2_DeltaPhi", left2_left2_DeltaPhi);
	ShowMessage(level+1,"left1_left2_DeltaPhi", left1_left2_DeltaPhi);
	ShowMessage(level+1,"left1_comb_DeltaPhi", left1_comb_DeltaPhi);
	ShowMessage(level+1,"left2_comb_DeltaPhi", left2_comb_DeltaPhi);
	ShowMessage(level+1,"out1_left1_DeltaPhi", out1_left1_DeltaPhi);
	ShowMessage(level+1,"out1_left2_DeltaPhi", out1_left2_DeltaPhi);
	ShowMessage(level+1,"out2_left1_DeltaPhi", out2_left1_DeltaPhi);
	ShowMessage(level+1,"out2_left2_DeltaPhi", out2_left2_DeltaPhi);
}




